package com.ybb.production.mapper;

import com.ybb.production.domain.GarmentProductionProcess;
import com.ybb.production.responce.GarmentBianfeiCompleteDetailResp;
import org.apache.ibatis.annotations.Param;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 生产工序Mapper接口
 *
 * @author ruoyi
 * @date 2023-09-08
 */
public interface GarmentProductionProcessMapper {
    /**
     * 查询生产工序
     *
     * @param id 生产工序主键
     * @return 生产工序
     */
    public GarmentProductionProcess selectGarmentProductionProcessById(Long id);

    /**
     * 查询生产工序列表
     *
     * @param garmentProductionProcess 生产工序
     * @return 生产工序集合
     */
    public List<GarmentProductionProcess> selectGarmentProductionProcessList(GarmentProductionProcess garmentProductionProcess);

    /**
     * 新增生产工序
     *
     * @param garmentProductionProcess 生产工序
     * @return 结果
     */
    public int insertGarmentProductionProcess(GarmentProductionProcess garmentProductionProcess);

    /**
     * 修改生产工序
     *
     * @param garmentProductionProcess 生产工序
     * @return 结果
     */
    public int updateGarmentProductionProcess(GarmentProductionProcess garmentProductionProcess);

    /**
     * 删除生产工序
     *
     * @param id 生产工序主键
     * @return 结果
     */
    public int deleteGarmentProductionProcessById(Long id);

    /**
     * 批量删除生产工序
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteGarmentProductionProcessByIds(Long[] ids);

    int deleteGarmentProductionProcessByOrderIds(Long[] ids);

    void updateProcessQuantityByOrderId(@Param("orderId") Long orderId, @Param("quantity") long quantity);

    List<Map<String, Object>> selectCountByOrderIds(@Param("orders") List<Long> orders);

    List<Map<String, Object>> selectGarmentProductionProcessLastProcess(@Param("orderIds") Set<Long> orderIds);

    List<Map<String, Object>> processCnt(@Param("orderIds") Set<Long> orderIdss);

    String qrySumPriceByOrderIds(@Param("producingPriceIdsList") List<String> producingPriceIdsList);

    int qeryProcessCnt(@Param("producingPriceIdsList") ArrayList<Long> orderId);

    List<GarmentProductionProcess> seleAllByIds(@Param("processIds") List<Long> processIds);


    List<GarmentBianfeiCompleteDetailResp> selectListByBundleNo(@Param("cuttingBedId") Long cuttingBedId);

    List<GarmentBianfeiCompleteDetailResp> selectListByBundleNoAndBleNo(Long cuttingBedId);
}
